package org.adoxx.modeldocu; import java.io.File; import java.util.Collections; import java.util.Map; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.thread.ThreadSafe; import org.apache.cocoon.acting.Action; import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.Redirector; import org.apache.cocoon.environment.Request; import org.apache.cocoon.environment.SourceResolver; import org.apache.cocoon.servlet.multipart.Part; import org.apache.cocoon.servlet.multipart.PartOnDisk; import org.apache.commons.io.FileUtils; public class UploadAction extends AbstractLogEnabled implements Action, ThreadSafe { @SuppressWarnings("rawtypes") public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters par) throws Exception { Request request = ObjectModelHelper.getRequest(objectModel); Part filePart = (Part) request.get("uploaded_file"); File file = ((PartOnDisk) filePart).getFile(); getLogger().debug("Uploaded file = " + file.getCanonicalPath()); String baseDir = par.getParameter("baseDir"); String userDir = request.getParameter("userDir"); File userDirectory = new File(baseDir, userDir); userDirectory.mkdir(); FileUtils.copyFile(file, new File(userDirectory, file.getName())); //FileUtils.copyFile(file, destFile); // here you can open an InputStream on the file or whatever // you may also want to delete the file after using it return Collections.EMPTY_MAP; } }